// Ts描述函数,是要描述函数的什么

// 1. 描述函数的形参
// 2. 描述函数的返回值

// 函数声明
// 注意: 可选参数必须在必填参数的后面
// function fn(x: number = 2 , y?: number): number {
//   return x + y
// }
// 函数表达式
// let fn1: (x: number, y: number) => number // 声明变量以及这个变量的数据类型
// // 给变量赋值
// fn1 = function (x: number, y: number): number {
//   return x + y
// }
// const fn2 = (x: number, y: number): number => {
//   return x + y
// }

// fn(undefined,9)

// 剩余参数:
// function fn(x: number, y: number, ...args: any[]) {
//   return x + y
// }

// fn(1, 2, 3, 4, 5, 6)

// 函数重载
function reverse(x: number): number
function reverse(x: string): string
function reverse(x: number | string): number | string | void {
  if (typeof x === 'number') {
    return Number(x.toString().split('').reverse().join(''))
  } else if (typeof x === 'string') {
    return x.split('').reverse().join('')
  }
}

reverse(123).toFixed() // 321
reverse('123').trim() // '321'

/*

function fn(x=2,y){}

fn(,9)

*/
